[XEND] Fix pygrub when run server-side on a domain with blktap disks.
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Thu, 5 Oct 2006 15:14:50 +0000 (16:14 +0100)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Thu, 5 Oct 2006 15:14:50 +0000 (16:14 +0100)
For some slightly-crazy reason the blktap patches changed the name
of the SEXPR block containing the disk definition 'vbd' to 'tap', even
though merely changing the 'uname' fragement was sufficient. eg

 (vbd (backend 0) (dev hda:disk) (uname file:/xen/rhel4x86_64.img)
 (mode w) )

changes to

 (tap (backend 0) (dev hda:disk) (uname tap:aio:/xen/rhel4x86_64.img)
 (mode w) )

If you create a domain with xm, then xm runs pygrub client side which
works fine. If you create a domain by feeding a block of SEXPR to Xend
over its network port, then pygrub is run server side. The code in
XenD which decides which disk to run pygrub against only looks for
'device/vbd' in the SEXPR so fails to see any blktap disks.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
tools/python/xen/xend/XendDomainInfo.py

index 230479d7c0b0dfa759d85654455689d5d5ae340f..42e3a50dd7eaa1fc74a1de20d575ab377beb8f90 100644 (file)
@@ -1745,7 +1745,7 @@ class XendDomainInfo:
         blcfg = None
         # FIXME: this assumes that we want to use the first disk device
         for (n,c) in self.info['device']:
-            if not n or not c or n != "vbd":
+            if not n or not c or not(n in ["vbd", "tap"]):
                 continue
             disk = sxp.child_value(c, "uname")
             if disk is None: